import axios, { AxiosRequestConfig } from 'axios'
const baseURL = 'https://nsfw.poshir.top/'

function ElMessage (info: { showClose: boolean; message: any; type: string }) {
  console.log(info)
}
// 开启loading
// 创建axios实例
const http = axios.create({
  baseURL, // 配置了跨域,起了别名api,在baseBUL用了别名,这里使用baseURL,配置在下面vue.config.js
  timeout: 6000
  // withDirectives: true // 是否携带cookies
})
// 请求拦截
http.interceptors.request.use(
  (config) => {
    // 在请求发送之前做一些处理 config是axios的配置对象
    // console.log(config);
    //  携带token
    // config.headers["Authorization"] ="Bearer " + JSON.parse(localStorage.getItem("remember_token")) || null;
    // 配置完成将config返回
    return config
  },
  (err) => {
    // 当请求失败时做一些处理 抛出错误
    throw new Error(err)
  }
)

// 响应拦截
http.interceptors.response.use(
  (res) => {
    const { status, msg } = res.data
    switch (status) {
      case 200:
        ElMessage({
          showClose: true,
          message: msg,
          type: 'success'
        })
        break

      case 401:
        ElMessage({
          showClose: true,
          message: '未授权',
          type: 'error'
        })
        break
    }
    return res.data
  },
  (err) => {
    throw new Error(err)
  }
)

function request ({ method = 'get', url, data = {}, params = {} }: AxiosRequestConfig) {
  return http({
    method,
    url,
    data,
    params
  })
}

export default request
